12011
16228
J'ai un ensemble de données comme indiqué ci-dessous
nom col1 col2
a 10,3 10,9
b 11 15
c 20 7,2
d 6,2 6,2
e 5,3 5,4
f 4,5 4,0
je veux comparer col1 et col2 de mon df et je veux créer une autre colonne dans laquelle tout en comparant les valeurs col1 et col2 si la valeur de col2 augmente à partir de col1, je veux entrer en augmentant à côté d'eux dans ma colonne là-bas et si elles sont décroissant alors je veux écrire décroissant et aucun changement s'ils sont identiques
et je veux ma sortie comme ça
nom col1 col2 col3
a 10,3 10,9 croissant
b 11 15 croissant
c 20 7,2 décroissant
d 6.2 6.2 aucun changement
e 5,3 5,4 augmentation
f 4,5 4,0 décroissant 
Avec dplyr:
df%>%
muter (Col3 = ifelse (col2 == col1,
"pas de changement",
ifelse (col2> col1,
"croissant", "décroissant")))
Ou en utilisant case_when comme suggéré par @akrun:
df%>%
mutate (Col3 = case_when (col1 == col2 ~ "pas de changement",
col2> col1 ~ "Augmenter",
TRUE ~ "décroissant"))
Résultat:
nom col1 col2 Col3
1 a 10,3 10,9 croissant
2 b 11,0 15,0 croissant
3 c 20,0 7,2 décroissant
4 j 6,2 6,2 pas de changement
5 e 5,3 5,4 en augmentation
6 f 4,5 4,0 décroissant
Les données:
df <-structure (liste (nom = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3,
11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", row.names = c (NA,
-6L))
|
Nous pouvons soustraire col1 par col2 puis utiliser le signe pour attribuer des valeurs
df $ col3 <- c ("décroissant", "pas de changement", "croissant") [signe (df $ col1 - df $ col2) + 2]
df
# nom col1 col2 col3
# 1 a 10,3 10,9 décroissant
# 2 b 11,0 15,0 décroissant
# 3 c 20,0 7,2 augmentant
# 4 d 6.2 6.2 aucun changement
# 5 e 5.3 5.4 décroissant
# 6 f 4,5 4,0 augmentant
Ou en utilisant dplyr, nous pouvons utiliser case_when
bibliothèque (dplyr)
df%>%
mutate (col3 = case_when (col1 == col2 ~ "pas de changement",
col1> col2 ~ "augmenter",
TRUE ~ "décroissant"))
|
Base R
df $ col3 <-with (df, ifelse (col1> col2, "décroissant",
ifelse (col1